home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / comm2 / zpont311.lha / zpoint-3.11 / Rexx / RequestFC.zprx < prev    next >
Text File  |  1995-03-09  |  6KB  |  252 lines

  1. /*
  2.    $VER: RequestFC.zprx 1.0 (1.9.94) Copyright (c) Ralph Seichter.
  3.    Ein ARexx-Skript für "Zodiac's Point" (basierend auf dem Skript
  4.    'RequestFC.mdmrexx 1.2' von Jürgen Kohrmeyer).
  5.  
  6.    Das Skript benötigt Jürgen Kohrmeyer's "rexxtricks.library" und
  7.    Ralph Seichter's "Zodiac's Point" (V37.155 oder besser; ältere
  8.    ZP-Versionen sind dafür leider nicht geeignet).
  9.  
  10.  
  11.    FUNKTIONSBESCHREIBUNG:
  12.  
  13.    Dieses Script durchsucht eine 'POINT-INFO' oder 'Re: INHALT' Nachricht
  14.    von 'MAPS' der Boxsoftware 'Fastcall' nach requestbaren Dateien. Alle
  15.    gefundenen Dateien werden alphabetisch sortiert in einem Fenster auf
  16.    dem Screen von 'MicroDot' dargestellt. Hier können Sie die gewünschten
  17.    Dateien auswählen und requesten, Multiselect ist dabei möglich. Die
  18.    Dateien werden per 'REQUEST' von 'MAPS' angefordert.
  19.  
  20.  
  21.    INSTALLATION:
  22.  
  23.    Kopieren sie dieses Skript ins Rexx-Verzeichnis von ZP. Sie können
  24.    es dann an das Gadget [Bestellen] binden, indem Sie in der Datei
  25.    "maps/request.zp" den Text
  26.  
  27.       .key FILE/A,SCREEN/A
  28.       .bra {
  29.       .ket }
  30.       Delete >NIL: {FILE} QUIET
  31.       Run >NIL: SYS:Rexxc/RX ZP:Rexx/RequestFC.zprx {SCREEN}
  32.  
  33.    eintragen (bitte passen Sie ggf. den Pfad für 'RX' an).
  34.  
  35.  
  36.    AUTOR DIESES SKRIPTS:
  37.  
  38.       Ralph Seichter       Tel. : V +49-2233-70293 Q
  39.       Deutscher Ring 6     EMail: zodiac@darkness.gun.de
  40.       D-50354 Hürth
  41.  
  42.    Verwenden Sie bitte nach Möglichkeit elektronische Post!
  43.  
  44.  
  45.    ANPASSEN DES SKRIPTS:
  46.  
  47.    Am Anfang des Skripts können einige Parmeter eingestellt werden:
  48.  
  49.    mapsadr         - Adresse des MAPS-Dienstes
  50.  
  51.    filelaenge      - Stellt ein, ob die Filelängen im Fenster angezeigt
  52.                      werden sollen. 0 = aus, 1 = ein
  53.  
  54.    brettname       - Stellt ein, ob die Brettnamen im Fenster angezeigt
  55.                      werden sollen. 0 = aus, 1 = ein
  56.  
  57.    brettnamelaenge - Stellt die anzahl der Zeichen des Brettnamens ein
  58.  
  59.    fensterbreite   = Stellt die Breite des Listview-Fensters ein
  60. */
  61.  
  62. mapsadr         = 'MAPS'   /* oder 'maps@<server>.<domain>' */
  63. filelaenge      = 1
  64. brettname       = 1
  65. brettnamelaenge = 28
  66. fensterbreite   = 600
  67.  
  68. /********************************************************************/
  69. /*** !!! BITTE AENDERN SIE UNTERHALB DIESER ZEILE NICHTS MEHR !!! ***/
  70. /********************************************************************/
  71.  
  72.  
  73. PARSE ARG zp
  74. zp = COMPRESS(zp)
  75. IF (zp = '') THEN
  76.    zp = 'ZPoint'
  77.  
  78. OPTIONS RESULTS
  79. ADDRESS VALUE zp
  80.  
  81. IF (~SHOW('LIBRARIES', 'rexxtricks.library')) THEN
  82.    IF (~ADDLIB('rexxtricks.library', 0, -30, 0)) THEN DO
  83.       requestnotify 'Kann rexxtricks.library nicht öffnen!'
  84.       EXIT
  85.    END
  86.  
  87. IF (~SHOW('LIBRARIES','rexxsupport.library')) THEN
  88.    IF (~ADDLIB('rexxsupport.library', 0, -30, 0)) THEN DO
  89.       requestnotify 'Kann rexxsupport.library nicht öffnen!'
  90.       EXIT
  91.    END
  92.  
  93.  
  94. /* Absender und Betreff auslesen */
  95.  
  96. messageinfo author
  97. absender = RESULT
  98. messageinfo fullsubject
  99. betreff = RESULT
  100.  
  101.  
  102. /* Prüfen, ob es eine 'Re: INHALT' oder eine */
  103. /* 'POINT-INFO' Nachricht von 'MAPS' ist */
  104.  
  105. IF (~MATCHPATTERN(absender,'MAPS@#?')) THEN DO
  106.    requestnotify 'Keine MAPS-Nachricht!'
  107.    EXIT
  108. END
  109.  
  110. IF (~MATCHPATTERN(betreff,'RE:#?INHALT') & ~MATCHPATTERN(betreff,'POINT-INFO')) THEN DO
  111.    requestnotify 'Keine MAPS-Nachricht!'
  112.    EXIT
  113. END
  114.  
  115.  
  116. /* Nachrichtenrumpf auslagern und Datei zum Lesen öffnen */
  117.  
  118. inname  = 'T:1-RequestFC.tmp'
  119. outname = 'T:2-RequestFC.tmp'
  120. savemessagebody inname
  121. IF (~RC) THEN DO
  122.    requestnotify 'Kann Nachricht nicht speichern!'
  123.    EXIT
  124. END
  125.  
  126. IF (~READFILE(inname,'zeile')) THEN DO
  127.    requestnotify 'Kann ' || inname || ' nicht lesen!'
  128.    EXIT
  129. END
  130.  
  131.  
  132. /* Je nach Nachricht das richtige Unterprogramm aufrufen */
  133.  
  134. IF (MATCHPATTERN(betreff,'POINT-INFO')) THEN
  135.    CALL newfiles
  136. ELSE
  137.    CALL inhalt
  138.  
  139.  
  140. /* Auslagerungsdatei schließen und löschen */ 
  141.  
  142. dummy = DELETE(inname)
  143.  
  144.  
  145. /* ListView-Fenster Definition */
  146.  
  147. windef.pubscreen = zp
  148. windef.title     = 'Zu requestende Dateien auswählen'
  149. windef.postext   = '_Requesten'
  150. windef.negtext   = '_Abbrechen'
  151. windef.sort      = 'TRUE'
  152. windef.font      = 'DEFAULT'
  153. windef.width     = fensterbreite
  154.  
  155.  
  156. /* ListView-Fenster öffnen */
  157.  
  158. IF (VIEWLIST('string', 'windef', 'destvar')) THEN DO
  159.    IF (~OPEN('temp2', outname, 'WRITE')) THEN DO
  160.       BEEP()
  161.       EXIT
  162.    END
  163.    sendmail = 0
  164.    DO i = 0 TO destvar.count-1
  165.       x = LSEARCH(destvar.i, 'string')
  166.       IF (x ~= (-1)) THEN DO
  167.          dummy = WRITELN('temp2', request.x)
  168.          sendmail = 1
  169.       END
  170.    END
  171.    dummy = CLOSE('temp2')
  172.    IF (sendmail) THEN DO
  173.       writemessage 'FILE ' || outname || ' RECEIVER ' || mapsadr || ' SUBJECT REQUEST'
  174.       IF (RESULT = '') THEN DO
  175.          requestnotify 'Kann Bestellung nicht verschicken!'
  176.          EXIT
  177.       END
  178.       ELSE
  179.          requestnotify 'Bestellung verschickt.'
  180.    END
  181.    ELSE
  182.       dummy = DELETE(outname)
  183. END
  184.  
  185.  
  186. /* Skript beenden */
  187.  
  188. EXIT(0)
  189.  
  190.  
  191. /* 'POINT-INFO' Nachricht von 'MAPS' nach requestbaren Files durchsuchen */
  192.  
  193. newfiles:
  194.    anzahl = 0
  195.  
  196.    DO i = 0 TO zeile.count-1
  197.       IF LEFT(zeile.i,11) = 'File Name :' THEN DO
  198.          string.anzahl = LEFT(SUBSTR(zeile.i,13),31)
  199.  
  200.          i = i+3
  201.          kbytes = SUBSTR(zeile.i,13)||'k'
  202.  
  203.          i = i+1
  204.          aktuellbrett = SUBSTR(zeile.i,13)
  205.  
  206.          i = i+1
  207.          request.anzahl = SUBSTR(zeile.i,13)
  208.  
  209.          IF filelaenge THEN
  210.             string.anzahl = string.anzahl RIGHT(kbytes,5)
  211.  
  212.          IF brettname THEN
  213.             string.anzahl = LEFT(aktuellbrett,brettnamelaenge) string.anzahl
  214.  
  215.          anzahl = anzahl+1
  216.       END
  217.    END
  218.  
  219.    string.count = anzahl
  220. RETURN
  221.  
  222.  
  223. /* 'RE: INHALT' von 'MAPS' nach requestbaren Files durchsuchen */
  224.  
  225. inhalt:
  226.    anzahl = 0
  227.  
  228.    DO i = 0 TO zeile.count-1
  229.       IF LEFT(zeile.i,17) = 'Inhalt von Brett:' THEN
  230.          aktuellbrett = SUBSTR(zeile.i,19)
  231.  
  232.       IF DATATYPE(WORD(zeile.i,3)) = 'NUM' THEN DO
  233.          string.anzahl = SUBSTR(zeile.i,47)
  234.          request.anzahl = aktuellbrett string.anzahl
  235.  
  236.          string.anzahl = LEFT(string.anzahl,31)
  237.  
  238.          IF filelaenge THEN
  239.             string.anzahl = string.anzahl RIGHT(WORD(zeile.i,3),4)||'k'
  240.  
  241.          IF brettname THEN
  242.             string.anzahl = LEFT(aktuellbrett,brettnamelaenge) string.anzahl
  243.  
  244.          anzahl = anzahl+1
  245.       END
  246.    END
  247.  
  248.    string.count = anzahl
  249. RETURN
  250.  
  251. /* EOF */
  252.